Web applications are typically written in a combination of several programming languages (e.g., JavaScript on the client side, and Hypertext Processor Pages (PHP) with embedded Structured Query Language (SQL) commands on the server side), and generate structured output in the form of dynamically generated HyperText Markup Language (HTML) pages that may refer to additional scripts to be executed. Since the application is built using a complex mixture of different languages, programmers may inadvertently make mistakes and introduce faults in the applications, resulting in web application crashes and malformed dynamically-generated HTML pages that can seriously impact usability.
Moreover, construction of test cases for such applications might require inputs for both the client and the server and can be difficult and tedious. Often times, inputs must be generated and selected by hand and this can be challenging when the goal is to achieve increased test coverage.